package com.example.util;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.StringJoiner;
import java.util.concurrent.TimeUnit;

public class CommonUtils {

    /**
     * 读取文件
     *
     * @param path 文件路径
     * @return 文件内容（字符串）
     */
    public static String readFile(String path) {
        try {
            List<String> lines = Files.readAllLines(Paths.get(path), StandardCharsets.UTF_8);
            return String.join(System.lineSeparator(), lines);
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 休眠 seconds 秒。
     *
     * @param seconds 休眠时间（秒）
     */
    public static void sleepSecond(long seconds) {
        try {
            TimeUnit.SECONDS.sleep(seconds);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 打印日志（携带线程信息）
     *
     * @param message 打印的信息
     */
    public static void printThreadLog(String message) {
        String log = new StringJoiner(" | ")
                .add(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS")))
                .add("线程id = " + String.format("%2d", Thread.currentThread().getId()))
                .add("线程名 = " + Thread.currentThread().getName())
                .add(message)
                .toString();
        System.out.println(log);
    }

}
